<!doctype html>
<html class="default no-js">
<head>
	<meta charset="utf-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
	<title>FishboneLayout | GoJS API</title>
	<meta name="description" content="">
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<link rel="stylesheet" href="../../assets/css/bootstrap.min.css">
	<link rel="stylesheet" href="../assets/css/main.css">
</head>
<body>
<header>
	<!-- non-fixed navbar -->
	<nav id="non-fixed-nav" class="navbar navbar-inverse navbar-top">
		<div class="container-fluid">
			<div class="navbar-header">
				<div class="navheader-container">
					<div class="navheader-collapse" data-toggle="collapse" data-target="#navbar">
						<a id="toplogo" class="navbar-brand" href="../../index.html">GoJS</a>
						<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar">
							<span class="sr-only">Toggle navigation</span>
							<span class="icon-bar"></span>
							<span class="icon-bar"></span>
							<span class="icon-bar"></span>
						</button>
					</div>
				</div>
			</div>
			<div id="navbar" class="navbar-collapse collapse">
				<ul class="nav navbar-nav navbar-right">
					<li><a href="../../index.html">Home</a></li>
					<li><a href="../../learn/index.html">Learn</a></li>
					<li><a href="../../samples/index.html">Samples</a></li>
					<li><a href="../../intro/index.html">Intro</a></li>
					<li><a href="../../api/index.html" target="api">API</a></li>
					<li><a href="https://www.nwoods.com/components/evalform.htm">Register</a></li>
					<li><a href="../../download.html">Download</a></li>
					<li><a href="https://forum.nwoods.com/c/gojs">Forum</a></li>
					<li><a href="https://www.nwoods.com/contact.html" onclick="ga('send','event','Outbound Link','click','contact');">Contact</a></li>
					<li class="buy"><a href="https://www.nwoods.com/sales/index.html" onclick="ga('send','event','Outbound Link','click','buy');">Buy</a></li>
					<li class="activate"><a href="https://www.nwoods.com/app/activate.aspx?sku=gojs">Activate</a></li>
				</ul>
			</div><!--/.nav-collapse -->
		</div>
	</nav>
	<div class="tsd-page-header">
		<div class="tsd-page-toolbar">
			<div class="container-fluid plr15">
				<div class="table-wrap">
					<div class="table-cell" id="tsd-search" data-index="../assets/js/search.js" data-base="..">
						<div class="field">
							<label for="tsd-search-field" class="tsd-widget search no-caption">Search</label>
							<input id="tsd-search-field" type="text" />
						</div>
						<ul class="results">
							<li class="state loading">Preparing search index...</li>
							<li class="state failure">The search index is not available</li>
						</ul>
						<a href="../index.html" class="title">GoJS API</a>
					</div>
					<div class="table-cell" id="tsd-widgets">
						<div id="tsd-filter">
							<a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a>
							<div class="tsd-filter-group">
								<div class="tsd-select" id="tsd-filter-visibility">
									<span class="tsd-select-label">All</span>
									<ul class="tsd-select-list">
										<li data-value="public">Public</li>
										<li data-value="protected">Public/Protected</li>
										<li data-value="private" class="selected">All</li>
									</ul>
								</div>
							</div>
						</div>
						<a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a>
					</div>
				</div>
			</div>
		</div>
		<div class="tsd-page-title">
			<div class="container-fluid plr15">
				<div class="top-copyright">
					<!--<b>GoJS</b>&reg; Diagramming Components<br/>version &lt;br/&gt;version 2.1.35 for TypeScript/HTML<br/>by <a href="https://www.nwoods.com/">Northwoods Software&reg;</a>-->
					<b>GoJS</b>&reg; Diagramming Components<br/>version 2.1.35<br/>by <a href="https://www.nwoods.com/">Northwoods Software&reg;</a>
				</div>
				<div>
					<h1>Class FishboneLayout</h1>
				</div>
			</div>
		</div>
	</div>
</header>
<div class="container-fluid container-main plr15">
	<div class="row">
		<div class="col-8 col-content">
			<section class="tsd-panel tsd-extension">
				<p>
					This is an extension and not part of the main GoJS library.
					Note that the API for this class may change at any time.
					If you intend to use an extension in production, you should copy the code to your own source directory.
					Extensions can be found in the GoJS kit under the <code>extensions</code> or <code>extensionsTS</code> folders.
					See the <a href="../../intro/extensions.html">Extensions intro page</a> for more information.
				</p>
			</section>
			<section class="tsd-panel tsd-hierarchy">
				<h3>Hierarchy</h3>
				<ul class="tsd-hierarchy">
					<li>
						<a href="Layout.html" class="tsd-signature-type">Layout</a>
						<ul class="tsd-hierarchy">
							<li>
								<a href="TreeLayout.html" class="tsd-signature-type">TreeLayout</a>
								<ul class="tsd-hierarchy">
									<li>
										<span class="target">FishboneLayout</span>
									</li>
								</ul>
							</li>
						</ul>
					</li>
				</ul>
			</section>
			<section class="tsd-panel tsd-comment">
				<div class="tsd-comment tsd-typography">
					<p>FishboneLayout is a custom <a href="Layout.html">Layout</a> derived from <a href="TreeLayout.html">TreeLayout</a> for creating &quot;fishbone&quot; diagrams.
					A fishbone diagram also requires a <a href="Link.html">Link</a> class that implements custom routing, <a href="FishboneLink.html">FishboneLink</a>.</p>
					<p>This only works for angle === 0 or angle === 180.</p>
					<p>This layout assumes Links are automatically routed in the way needed by fishbone diagrams,
					by using the FishboneLink class instead of go.Link.</p>
					<p>If you want to experiment with this extension, try the <a href="../../extensionsTS/Fishbone.html">Fishbone Layout</a> sample.</p>
				</div>
			</section>
			<section class="tsd-panel-group tsd-index-group">
				<h2>Index</h2>
				<section class="tsd-panel tsd-index-panel">
					<div class="tsd-index-content">
						<section class="tsd-index-section ">
							<h3>Constructors</h3>
							<ul class="tsd-index-list">
								<li class="tsd-kind-constructor tsd-parent-kind-class"><a href="FishboneLayout.html#constructor" class="tsd-kind-icon">constructor</a></li>
							</ul>
						</section>
						<section class="tsd-index-section ">
							<h3>Methods</h3>
							<ul class="tsd-index-list">
								<li class="tsd-kind-method tsd-parent-kind-class"><a href="FishboneLayout.html#assignTreeVertexValues" class="tsd-kind-icon">assign<wbr>Tree<wbr>Vertex<wbr>Values</a></li>
								<li class="tsd-kind-method tsd-parent-kind-class"><a href="FishboneLayout.html#commitLinks" class="tsd-kind-icon">commit<wbr>Links</a></li>
								<li class="tsd-kind-method tsd-parent-kind-class"><a href="FishboneLayout.html#commitNodes" class="tsd-kind-icon">commit<wbr>Nodes</a></li>
								<li class="tsd-kind-method tsd-parent-kind-class"><a href="FishboneLayout.html#makeNetwork" class="tsd-kind-icon">make<wbr>Network</a></li>
								<li class="tsd-kind-method tsd-parent-kind-class"><a href="FishboneLayout.html#shift" class="tsd-kind-icon">shift</a></li>
								<li class="tsd-kind-method tsd-parent-kind-class"><a href="FishboneLayout.html#shiftAll" class="tsd-kind-icon">shift<wbr>All</a></li>
							</ul>
						</section>
					</div>
				</section>
			</section>
			<section class="tsd-panel-group tsd-member-group ">
				<h2>Constructors</h2>
				<section class="tsd-panel tsd-member tsd-kind-constructor tsd-parent-kind-class">
					<a name="constructor" class="tsd-anchor"></a>
					<h3>
						constructor
					</h3>
					<ul class="tsd-signatures tsd-kind-constructor tsd-parent-kind-class">
						<li class="tsd-signature tsd-kind-icon">new <wbr>Fishbone<wbr>Layout<span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="FishboneLayout.html" class="tsd-signature-type">FishboneLayout</a></li>
					</ul>
					<ul class="tsd-descriptions">
						<li class="tsd-description">
							<div class="tsd-comment tsd-typography">
								<p>Constructs a FishboneLayout and sets the following properties:</p>
								<ul>
									<li><a href="TreeLayout.html#alignment">alignment</a> = <a href="TreeLayout.html#static-AlignmentBusBranching">TreeLayout.AlignmentBusBranching</a></li>
									<li><a href="TreeLayout.html#setsPortSpot">setsPortSpot</a> = false</li>
									<li><a href="TreeLayout.html#setsChildPortSpot">setsChildPortSpot</a> = false</li>
								</ul>
							</div>
							<h4 class="tsd-returns-title">Returns <a href="FishboneLayout.html" class="tsd-signature-type">FishboneLayout</a></h4>
						</li>
					</ul>
				</section>
			</section>
			<section class="tsd-panel-group tsd-member-group ">
				<h2>Methods</h2>
				<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class">
					<a name="assignTreeVertexValues" class="tsd-anchor"></a>
					<h3>
						<span class="tsd-flag ts-flagOverride">Override</span>
						assign<wbr>Tree<wbr>Vertex<wbr>Values
					</h3>
					<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
						<li class="tsd-signature tsd-kind-icon">assign<wbr>Tree<wbr>Vertex<wbr>Values<span class="tsd-signature-symbol">(</span>v<span class="tsd-signature-symbol">: </span><a href="TreeVertex.html" class="tsd-signature-type">TreeVertex</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">void</span></li>
					</ul>
					<ul class="tsd-descriptions">
						<li class="tsd-description">
							<div class="tsd-comment tsd-typography">
								<p>Add a direction property to each vertex and modify <a href="TreeVertex.html#layerSpacing">TreeVertex.layerSpacing</a>.</p>
							</div>
							<h4 class="tsd-parameters-title">Parameters</h4>
							<ul class="tsd-parameters">
								<li>
									<h5>v: <a href="TreeVertex.html" class="tsd-signature-type">TreeVertex</a></h5>
								</li>
							</ul>
							<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4>
						</li>
					</ul>
				</section>
				<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class">
					<a name="commitLinks" class="tsd-anchor"></a>
					<h3>
						<span class="tsd-flag ts-flagOverride">Override</span>
						commit<wbr>Links
					</h3>
					<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
						<li class="tsd-signature tsd-kind-icon">commit<wbr>Links<span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">void</span></li>
					</ul>
					<ul class="tsd-descriptions">
						<li class="tsd-description">
							<div class="tsd-comment tsd-typography">
								<p>This override stops links from being committed since the work is done by the <a href="FishboneLink.html">FishboneLink</a> class.</p>
							</div>
							<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4>
						</li>
					</ul>
				</section>
				<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class">
					<a name="commitNodes" class="tsd-anchor"></a>
					<h3>
						<span class="tsd-flag ts-flagOverride">Override</span>
						commit<wbr>Nodes
					</h3>
					<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
						<li class="tsd-signature tsd-kind-icon">commit<wbr>Nodes<span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">void</span></li>
					</ul>
					<ul class="tsd-descriptions">
						<li class="tsd-description">
							<div class="tsd-comment tsd-typography">
								<p>Assigns <a href="Link.html#fromSpot">Link.fromSpot</a>s and <a href="Link.html#toSpot">Link.toSpot</a>s based on branching and angle
								and moves vertexes based on dummy locations.</p>
							</div>
							<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4>
						</li>
					</ul>
				</section>
				<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class">
					<a name="makeNetwork" class="tsd-anchor"></a>
					<h3>
						<span class="tsd-flag ts-flagOverride">Override</span>
						make<wbr>Network
					</h3>
					<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
						<li class="tsd-signature tsd-kind-icon">make<wbr>Network<span class="tsd-signature-symbol">(</span>coll<span class="tsd-signature-symbol">: </span><a href="Diagram.html" class="tsd-signature-type">Diagram</a><span class="tsd-signature-symbol"> | </span><a href="Group.html" class="tsd-signature-type">Group</a><span class="tsd-signature-symbol"> | </span><a href="Iterable.html" class="tsd-signature-type">Iterable</a><span class="tsd-signature-symbol">&lt;</span><a href="Part.html" class="tsd-signature-type">Part</a><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="LayoutNetwork.html" class="tsd-signature-type">LayoutNetwork</a></li>
					</ul>
					<ul class="tsd-descriptions">
						<li class="tsd-description">
							<div class="tsd-comment tsd-typography">
								<p>Create and initialize a <a href="LayoutNetwork.html">LayoutNetwork</a> with the given nodes and links.
								This override creates dummy vertexes, when necessary, to allow for proper positioning within the fishbone.</p>
							</div>
							<h4 class="tsd-parameters-title">Parameters</h4>
							<ul class="tsd-parameters">
								<li>
									<h5>coll: <a href="Diagram.html" class="tsd-signature-type">Diagram</a><span class="tsd-signature-symbol"> | </span><a href="Group.html" class="tsd-signature-type">Group</a><span class="tsd-signature-symbol"> | </span><a href="Iterable.html" class="tsd-signature-type">Iterable</a><span class="tsd-signature-symbol">&lt;</span><a href="Part.html" class="tsd-signature-type">Part</a><span class="tsd-signature-symbol">&gt;</span></h5>
									<div class="tsd-comment tsd-typography">
										<p>A <a href="Diagram.html">Diagram</a> or a <a href="Group.html">Group</a> or a collection of <a href="Part.html">Part</a>s.</p>
									</div>
								</li>
							</ul>
							<h4 class="tsd-returns-title">Returns <a href="LayoutNetwork.html" class="tsd-signature-type">LayoutNetwork</a></h4>
						</li>
					</ul>
				</section>
				<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class">
					<a name="shift" class="tsd-anchor"></a>
					<h3>
						shift
					</h3>
					<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
						<li class="tsd-signature tsd-kind-icon">shift<span class="tsd-signature-symbol">(</span>v<span class="tsd-signature-symbol">: </span><a href="TreeVertex.html" class="tsd-signature-type">TreeVertex</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">void</span></li>
					</ul>
					<ul class="tsd-descriptions">
						<li class="tsd-description">
							<div class="tsd-comment tsd-typography">
								<p>Shifts subtrees within the fishbone based on angle and node spacing.</p>
							</div>
							<h4 class="tsd-parameters-title">Parameters</h4>
							<ul class="tsd-parameters">
								<li>
									<h5>v: <a href="TreeVertex.html" class="tsd-signature-type">TreeVertex</a></h5>
								</li>
							</ul>
							<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4>
						</li>
					</ul>
				</section>
				<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class">
					<a name="shiftAll" class="tsd-anchor"></a>
					<h3>
						shift<wbr>All
					</h3>
					<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
						<li class="tsd-signature tsd-kind-icon">shift<wbr>All<span class="tsd-signature-symbol">(</span>direction<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span>, absolute<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span>, root<span class="tsd-signature-symbol">: </span><a href="TreeVertex.html" class="tsd-signature-type">TreeVertex</a>, v<span class="tsd-signature-symbol">: </span><a href="TreeVertex.html" class="tsd-signature-type">TreeVertex</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">void</span></li>
					</ul>
					<ul class="tsd-descriptions">
						<li class="tsd-description">
							<div class="tsd-comment tsd-typography">
								<p>Shifts a subtree.</p>
							</div>
							<h4 class="tsd-parameters-title">Parameters</h4>
							<ul class="tsd-parameters">
								<li>
									<h5>direction: <span class="tsd-signature-type">number</span></h5>
								</li>
								<li>
									<h5>absolute: <span class="tsd-signature-type">number</span></h5>
								</li>
								<li>
									<h5>root: <a href="TreeVertex.html" class="tsd-signature-type">TreeVertex</a></h5>
								</li>
								<li>
									<h5>v: <a href="TreeVertex.html" class="tsd-signature-type">TreeVertex</a></h5>
								</li>
							</ul>
							<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4>
						</li>
					</ul>
				</section>
			</section>
		</div>
		<div class="col-4 col-menu menu-sticky-wrap menu-highlight">
			<nav class="tsd-navigation primary">
				<ul>
					<li class="globals  ">
						<a href="../index.html"><em>GoJS <wbr>Class <wbr>Index</em></a>
					</li>
				</ul>
			</nav>
			<nav class="tsd-navigation secondary menu-sticky">
				<ul class="before-current">
				</ul>
				<ul class="current">
					<li class="current tsd-kind-class tsd-is-extension">
						<a href="FishboneLayout.html" class="tsd-kind-icon">Fishbone<wbr>Layout</a>
						<ul>
							<li class=" tsd-kind-constructor tsd-parent-kind-class">
								<a href="FishboneLayout.html#constructor" class="tsd-kind-icon">constructor</a>
							</li>
							<li class=" tsd-kind-method tsd-parent-kind-class">
								<a href="FishboneLayout.html#assignTreeVertexValues" class="tsd-kind-icon">assign<wbr>Tree<wbr>Vertex<wbr>Values</a>
							</li>
							<li class=" tsd-kind-method tsd-parent-kind-class">
								<a href="FishboneLayout.html#commitLinks" class="tsd-kind-icon">commit<wbr>Links</a>
							</li>
							<li class=" tsd-kind-method tsd-parent-kind-class">
								<a href="FishboneLayout.html#commitNodes" class="tsd-kind-icon">commit<wbr>Nodes</a>
							</li>
							<li class=" tsd-kind-method tsd-parent-kind-class">
								<a href="FishboneLayout.html#makeNetwork" class="tsd-kind-icon">make<wbr>Network</a>
							</li>
							<li class=" tsd-kind-method tsd-parent-kind-class">
								<a href="FishboneLayout.html#shift" class="tsd-kind-icon">shift</a>
							</li>
							<li class=" tsd-kind-method tsd-parent-kind-class">
								<a href="FishboneLayout.html#shiftAll" class="tsd-kind-icon">shift<wbr>All</a>
							</li>
						</ul>
					</li>
				</ul>
				<ul class="after-current">
				</ul>
			</nav>
		</div>
	</div>
</div>
<div class="container-fluid bottom-copyright plr15">
	Copyright &copy; 1998-2021 by Northwoods Software Corporation.
</div>
<div class="overlay"></div>
<script src="../assets/js/main.js"></script>
<script src="../../assets/js/api.js"></script>
<script src="../../assets/js/bootstrap.min.js"></script>
<script>if (location.protocol == 'file:') document.write('<script src="../assets/js/search.js"><' + '/script>');</script>
<script>
        (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
                m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
        })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

        ga('create', 'UA-1506307-5', 'auto');
        ga('send', 'pageview');
    </script>
</body>
</html>